package com.cskaoyan.javase.oop1._11static._4notice;
/**
 * 注意事项:
 *
 * 1.一个类中，静态方法无法直接调用非静态的方法和属性，也不能使用this，super关键字（super后面会讲）
 * 经典错误：Non-static field/method xxx cannot be referenced from a static context
 * 原因：静态方法调用的时候，完全有可能没有对象，没有对象普通成员就无法访问。
 * 普通成员方法当中，是可以访问静态成员的。
 * 显然，既然对象都存在了，类加载一定进行了，所以这种访问是完全可行的
 * 建议采用这种访问形式的时候，使用类名.变量名的形式访问，以示区别，增加代码可读性
 *
 *
 * 2.只存在静态成员变量，不存在"静态局部变量"，包括静态方法中也没有"静态局部变量"。
 * 局部变量，已经被方法限制了作用域，不能用static修饰它！
 *
 * 3.静态成员变量不建议使用创建对象时期执行的结构赋值，虽然可以这么做。
 * 比如用构造器给静态成员变量赋值，虽然可以，但这种赋值依赖于创建对象，不合适。
 * 当然，特殊情况特殊对待，如果确有需求，语法又允许，都是可以做的。
 *
 * 4.普遍来说
 *      访问静态成员，都建议加上类名去访问，提升代码可读性。
 *      严厉禁止使用对象访问静态成员的做法！
 *
 * @since 16:13
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        int num = 100;
    }
}
class A{
    int num;
    static int staticNum;
    public static void testStatic(){
        // Non-static field 'num' cannot be referenced from a static context
        // 静态上下文,主要指的就是static方法
        // System.out.println(num);
        // System.out.println(this);
        System.out.println(A.staticNum);
    }
}
